"""

░▒▓███████▓▒░░▒▓███████▓▒░       ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░       ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓██▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓██▓▒░░▒▓█████████████▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░

************************************🔥🔥🔥************************************
作者：Shawn Holmes Hu（胡歌）.
QQ个人：791169230
QQ交流群：723478400（后期技术交流）
QQ腾讯频道：pd71901880（编程技术交流）
欢迎各位小伙伴一起交流学习，共同进步！加油！！！
************************************😊😊😊************************************
程序类型：嵌入式脚本
程序版权：原创
原程序作者：胡歌
程序首次创建时间：2025/1/9
************************************💝💝💝************************************
程序名称：dr_SelectedItems_DeleteOrMute_WithInput.py
程序版本：V1.0.0
程序介绍：将选中的音频对象，短于一秒的部分，进行删除操作。
************************************💯💯💯************************************
"""
from reaper_python import *

RPR_Undo_BeginBlock()  # 撤销设置开始
RPR_PreventUIRefresh(1)  # 防止UI刷新


def Detect_Items(the_second, the_choice):
    # 计算选中的音频对象的个数
    items_number = RPR_CountSelectedMediaItems(0)  # 获取选中的音频对象数量
    if items_number > 0:  # 如果选中了音频对象
        for i in range(items_number - 1, -1, -1):  # 从最后一个选中的音频对象开始遍历
            media_item = RPR_GetSelectedMediaItem(0, i)  # 获取选中的音频对象
            the_length = RPR_GetMediaItemInfo_Value(media_item, "D_LENGTH")  # 获取选中的音频对象的长度
            if the_length <= the_second:  # 如果音频对象的长度小于等于1秒
                if the_choice == "d":  # 用户选择删除
                    media_track = RPR_GetMediaItem_Track(media_item)  # 获取轨道
                    state = RPR_DeleteTrackMediaItem(media_track, media_item)  # 删除音频对象
                    if not state:
                        RPR_ShowConsoleMsg("删除失败！\n")  # 输出失败信息
                elif the_choice == "m":  # 用户选择静音
                    mute_state = RPR_SetMediaItemInfo_Value(media_item, "B_MUTE", 1)  # 设置为静音
                    if not mute_state:
                        RPR_ShowConsoleMsg("静音失败！\n")  # 输出失败信息
    else:
        RPR_ShowConsoleMsg("没有选中音频对象，请先选中需要操作的部分，然后再运行。\n")  # 提示信息


title = "请输入您的操作..."
num_inputs = 2
captions_csv = "检测时间（单位/秒）：,操作选择（D：删除/M：静音）："
retvals_csv = "1,D"
retvals_csv_sz = 512

# 获取用户输入
Boolean_retval, String_title, Int_num_inputs, String_captions_csv, String_retvals_csv, Int_retvals_csv_sz \
    = RPR_GetUserInputs(
    title, num_inputs, captions_csv, retvals_csv, retvals_csv_sz
)

if Boolean_retval:
    try:
        # 解析用户输入
        final_second = float(String_retvals_csv.split(",")[0])
        final_choice = String_retvals_csv.split(",")[1].strip().lower()  # 转换为小写
        # 校验输入
        if final_choice not in ["d", "m"]:
            RPR_ShowConsoleMsg("输入有误，请根据选择（D：删除/M：静音），重新输入！\n")
        else:
            # 输入有效，调用处理函数
            Detect_Items(final_second, final_choice)
    except ValueError:
        RPR_ShowConsoleMsg("输入有误，请根据选择（D：删除/M：静音），重新输入！\n")
else:
    RPR_ShowConsoleMsg("用户取消输入。\n")


RPR_PreventUIRefresh(-1)  # 允许UI刷新
RPR_UpdateArrange()  # 刷新界面，反映修改
RPR_Undo_EndBlock("将选中的音频对象，短于一秒的部分，进行删除或静音操作（用户输入选择）。", -1)  # 撤销设置结束

